import request from "../../utils/request"
Page({
  data: {
    // 初始静态列表（会被接口数据覆盖）
    familyList: [],
    showDialog: false,
    currentIndex: -1,
    isLogin: false,
    elderlyRoomList: [], // 存储接口返回的原始数据
    isLoading: true, // 控制加载动画
    hasData: false // 控制空数据提示（若接口无数据，可隐藏列表）
  },

  toHealth() {
    wx.navigateTo({
      url: '/pages/logs/healthData/healthData'
    });
  },

  // 原页面（pages/logs/logs.js）中的 toBill 方法修改
toBill(e) {
  // 从点击事件中获取当前老人的 elderlyId（通过data-elderlyid传递）
  const elderlyId = e.currentTarget.dataset.elderlyid;
  console.log('家人列表页-点击账单，传递的elderlyId：', elderlyId);
  wx.navigateTo({
    // 携带elderlyId参数跳转到账单页面
    url: `/pages/index/myBill/myBill?elderlyId=${elderlyId}`
  });
},

  toLogin() {
    wx.navigateTo({
      url: '/pages/my/login/login',
    })
  },

  // 点击解绑按钮：显示弹窗并保存索引
  handleUnbind(e) {
    this.setData({
      currentIndex: e.currentTarget.dataset.index,
      showDialog: true
    });
  },

  // 关闭弹窗：重置状态
  onClose() {
    this.setData({
      showDialog: false,
      currentIndex: -1
    });
  },

  handleConfirm() {
    const { currentIndex, familyList } = this.data;
    
    // 1. 强化边界检查
    if (currentIndex === -1 || currentIndex >= familyList.length || !familyList[currentIndex]) {
      wx.showToast({
        title: '操作失败：无效的索引',
        icon: 'none'
      });
      this.onClose();
      return;
    }
  
    const currentItem = familyList[currentIndex];
    if (!currentItem?.bindingId || !currentItem?.elderlyId) {
      wx.showToast({
        title: '操作失败：数据不完整',
        icon: 'none'
      });
      this.onClose();
      return;
    }
  
    const loginUserInfo = wx.getStorageSync('loginUserInfo');
    if (!loginUserInfo?.userId) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      this.onClose();
      return;
    }
  
    // 2. 立即前端删除提升体验
    const newFamilyList = [...familyList];
    newFamilyList.splice(currentIndex, 1);
    
    this.setData({
      familyList: newFamilyList,
      hasData: newFamilyList.length > 0,
      showDialog: false,
      currentIndex: -1
    });
  
    // 3. 调用解绑接口
    request({
      url: '/bindFamily/remove',
      method: 'POST',
      data: {
        bindingId: currentItem.bindingId,
        wxUserId: loginUserInfo.userId,
        elderlyId: currentItem.elderlyId
      }
    }).then(res => {
      if (res.data.success) {
        wx.showToast({
          title: '解绑成功',
          icon: 'success'
        });
        // 可选的二次确认刷新
        setTimeout(() => this.getElderlyRoomInfo(), 500);
      } else {
        // 后端失败时恢复数据
        wx.showToast({
          title: res.data.msg || '解绑失败',
          icon: 'none'
        });
        this.getElderlyRoomInfo();
      }
    }).catch(err => {
      console.error('解绑请求异常:', err);
      wx.showToast({
        title: '网络异常',
        icon: 'none'
      });
      this.getElderlyRoomInfo();
    });
  }, 

  /**
   * 获取老人关联的床位、房间及房型信息（带防缓存处理）
   * 对应后端接口：GET /elderly/room/info
   */
  async getElderlyRoomInfo() {
    // 1. 获取本地登录用户信息（传递wxUserId筛选数据）
    const loginUserInfo = wx.getStorageSync('loginUserInfo');
    this.setData({ isLoading: true }); // 显示加载动画

    try {
      // 2. 发起请求（强化防缓存：时间戳+随机数+无缓存头）
      const res = await request({
        url: '/elderly/room/info',
        method: 'GET',
        data: {
          wxUserId: loginUserInfo?.userId || null,
          _t: new Date().getTime() + Math.random() // 确保URL唯一，禁用缓存
        },
        header: {
          'Cache-Control': 'no-cache', // 强制不使用缓存
          'Pragma': 'no-cache'
        },
        loadingText: '加载老人居住信息中...',
        errorText: '获取居住信息失败'
      });

      // 3. 处理接口响应（适配页面familyList需要的字段格式）
      if (res.statusCode === 200) {
        console.log("获取的原始数据", res);
        // 确保数据是数组，避免map报错
        const elderlyRoomList = Array.isArray(res.data) ? res.data : [];

     // 核心修改：通过Map去重，保留第一个出现的elderlyId记录
     const uniqueElderlyMap = new Map();
     elderlyRoomList.forEach(item => {
       // 以elderlyId为key，若Map中没有则添加（确保唯一）
       if (!uniqueElderlyMap.has(item.elderlyId)) {
         uniqueElderlyMap.set(item.elderlyId, item);
       }
     });
     // 将Map的值转为数组（去重后的结果）
     const uniqueElderlyList = Array.from(uniqueElderlyMap.values());
     console.log('去重后的老人数据：', uniqueElderlyList);

     // 基于去重后的数据生成页面列表
     const dynamicFamilyList = uniqueElderlyList.map(item => ({
       name: item.elderlyName,
       relation: '家属',
       bed: `${item.roomType}${item.roomNo}-${item.bedNo}`,
       avatar: item.photo || '/images/family.png',
       bindingId: item.bindingId,
       elderlyId: item.elderlyId
     }));

     this.setData({
       elderlyRoomList: uniqueElderlyList, // 存储去重后的原始数据
       familyList: dynamicFamilyList,
       isLoading: false,
       hasData: dynamicFamilyList.length > 0
     });
     console.log('老人信息加载成功，动态列表：', dynamicFamilyList);
     return Promise.resolve();
      } else {
        console.log('获取老人信息失败，响应：', res);
        wx.showToast({
          title: res.data.msg || '获取信息失败',
          icon: 'none',
          duration: 2000
        });
        this.setData({ isLoading: false });
        return Promise.reject();
      }
    } catch (err) {
      // 网络异常处理
      console.error('获取老人信息请求异常：', err);
      wx.showToast({
        title: '网络异常，请稍后重试',
        icon: 'none',
        duration: 2000
      });
      this.setData({ isLoading: false });
      return Promise.reject();
    }
  },

  /**
   * 生命周期函数--监听页面加载（自动请求数据）
   */
  onLoad(options) {
    this.getElderlyRoomInfo();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示（登录状态判断+刷新）
   * 新增：200ms延迟请求数据，给后端解绑操作留足同步时间
   */
  onShow() {
    console.log('=== onShow 开始执行 ===');
    const userInfo = wx.getStorageSync('loginUserInfo');
    console.log('当前缓存的userInfo：', userInfo);

    // 强化未登录判断（覆盖各种无效登录信息场景）
    const isNotLogin = !userInfo ||
      Object.keys(userInfo).length === 0 ||
      !userInfo.userId ||
      userInfo.userId === '' ||
      userInfo.userId === null;

    console.log('isNotLogin 判断结果：', isNotLogin);
    if (isNotLogin) {
      console.log('=== 进入未登录分支 ===');
      this.setData({
        isLogin: false
      });
      return;
    }

    // 已登录：更新状态并延迟刷新数据（关键：200ms延迟，等待后端同步）
    console.log('=== 进入已登录分支 ===');
    this.setData({
      isLogin: true
    });
    setTimeout(() => {
      this.getElderlyRoomInfo(); // 延迟后请求数据，确保拉取最新结果
    }, 200);
    console.log('=== onShow 执行结束 ===');
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

   /**
   * 页面相关事件处理函数--监听用户下拉动作
   * 下拉刷新时触发，重新加载数据
   */
  onPullDownRefresh() {
    console.log('用户触发下拉刷新');
    // 1. 显示下拉刷新动画（默认会显示，这里可强制设置状态）
    wx.showNavigationBarLoading(); // 在导航栏显示加载图标

    // 2. 重新请求数据
    this.getElderlyRoomInfo().then(() => {
      // 3. 数据加载完成后，停止下拉刷新动画
      wx.stopPullDownRefresh();
      wx.hideNavigationBarLoading(); // 隐藏导航栏加载图标
      wx.showToast({
        title: '刷新成功',
        icon: 'success',
        duration: 1000
      });
    }).catch(() => {
      // 4. 若请求失败，也需要停止刷新动画
      wx.stopPullDownRefresh();
      wx.hideNavigationBarLoading();
      wx.showToast({
        title: '刷新失败',
        icon: 'none'
      });
    });
  },


  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})